package itheima02;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

/*
    BufferedReader类   高效字符输入缓冲流       读取字符的       读进来
	作用： 内部定义了一个长度为8192的字符数组，可以提高效率

	常用方法：
		1.public void close(): 关闭流,释放资源
		2.public int read(): 读取一个字符
			遇到文件结束标志,返回-1,说明读取文件应该结束了

		3.public int read(char[] chs):
			读取一些字符,把读取到的一些字符存入到方法参数字符数组chs中
			返回的是读取的字符的数量
			遇到文件结束标志,返回-1,说明读取文件应该结束了

	构造方法：
		public BufferedReader(Reader r):
			参数： Reader r 字符输入流抽象类 传递子类FileReader对象

	使用步骤：
		1.创建Reader类的子类FileReader对象，绑定源文件
		2.创建高效字符输入流BufferedReader对象br,传递Reader类的子类FileReader对象
		3.高效字符输入流BufferedReader对象br调用readLine方法,读取一行字符
		4.关闭流

	注意:
		1.对于缓冲流,千万不要自己调用flush方法
		2.只需要关闭缓冲流,自动关闭缓冲流所关联的其它流对象
		3.特有方法:
			public String readLine() : 读取一行文本
				遇到文件结束标志: 返回null
				读取到的一行文本的内容,不包含换行符,遇到换行符,说明这一行结束了
 */
public class Demo03BufferedReader {
    public static void main(String[] args) throws IOException {
        //1.创建Reader类的子类FileReader对象，绑定源文件
        //2.创建高效字符输入流BufferedReader对象br,传递Reader类的子类FileReader对象
        BufferedReader br = new BufferedReader(new FileReader("day12\\bw.txt"));

        //3.高效字符输入流BufferedReader对象br调用readLine方法,读取一行字符

        //保持每次读取到的一行字符串
        String line = null;

        //从br关联的文件中读取一行,返回回车换行前的内容,赋值给line
        //判断line是否等于null
        while((line = br.readLine())!=null) {
            System.out.println(line);
        }
        //4.关闭流
        br.close();
    }
    //原始代码
    private static void method() throws IOException {
        //1.创建Reader类的子类FileReader对象，绑定源文件
        FileReader fr = new FileReader("day12\\bw.txt");

        //2.创建高效字符输入流BufferedReader对象br,传递Reader类的子类FileReader对象
        BufferedReader br = new BufferedReader(fr);


        //3.高效字符输入流BufferedReader对象br调用readLine方法,读取一行字符

        String line;
        line = br.readLine();
        System.out.print(line);

        line = br.readLine();
        System.out.print(line);

        line = br.readLine();
        System.out.print(line);

        line = br.readLine();
        System.out.print(line);


        //4.关闭流
        br.close();
    }
}
